Dockerfile最小化构建镜像:减少层数、清理无用数据、多段构建 |
您所在的位置:网站首页 › docker 拷贝镜像 › Dockerfile最小化构建镜像:减少层数、清理无用数据、多段构建 |
docker的官方虽然有数十万计的免费镜像,但是出于某些安全考虑,一般不会使用免费镜像,因此这就需要我们自己制作镜像,制作的镜像如果很大,那么在镜像上传、下载的时候是很不方便的,因此我们需要精简我们制作的镜像,在满足需要的情况下,镜像越小越好。 镜像小有很多好处,例如快速部署、快速回滚。减少服务中断时间,同时镜像仓库占用磁盘空间也少了。 最小化构建镜像最小化构建镜像,我们一般从下边三个方面进行操作: 1.减少层数docker的构建中,Dockerfile中一个RUN会在镜像上构建一层,因此需要将多个RUN合并执行,减少镜像层数。 未减少镜像层数之前的Dockerfile: FROM centos RUN yum install -y vim RUN yum install -y net-tools执行命令,构建镜像:docker build -t centos:test . 构建成功之后,查看镜像大小: 执行命令,构建镜像:docker build -t centos:small . 构建成功,查看镜像大小: 一次RUN形成新的一层,如果没有在同一层删除,无论文件是否最后删除,都会带到下一层,所以要在每一层清理对应的残留数据,减小镜像大小。 未清理当前镜像层数的缓存的Dockerfile: FROM centos RUN yum install epel-release -y && \ yum install -y gcc gcc-c++ make gd-devel libxml2-devel \ libcurl-devel libjpeg-devel libpng-devel openssl-devel \ libmcrypt-devel libxslt-devel libtidy-devel autoconf \ iproute net-tools telnet wget curl执行命令,构建镜像:docker build -t centos:notclear . 构建成功,查看镜像大小: 执行命令,构建镜像:docker build -t centos:clear . 构建成功,查看镜像大小: 多段构建多用于需要编译安装的软件,或者是一些需要解压缩的软件,比如下边,我们采用多段构建编译一个jdk的镜像: 未采用多段构建的Dockerfile: FROM centos AS jdk COPY jdk-8u231-linux-x64.tar.gz /usr/local/src RUN cd /usr/local/src && \ tar -xzvf jdk-8u231-linux-x64.tar.gz -C /usr/local执行命令,构建镜像:docker build -t centos:notmul . 构建成功,查看镜像大小: 采用多段构建的Dockerfile: FROM centos AS jdk COPY jdk-8u231-linux-x64.tar.gz /usr/local/src RUN cd /usr/local/src && \ tar -xzvf jdk-8u231-linux-x64.tar.gz -C /usr/local FROM centos COPY --from=jdk /usr/local/jdk1.8.0_231 /usr/local执行命令,构建镜像:docker build -t centos:mul . 构建成功,查看镜像大小: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |